{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "52545e6a",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "import matplotlib.pyplot as plt\n",
    "from core.model import Model\n",
    "\n",
    "import json"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "2797ad65",
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_results(predicted_data, true_data):\n",
    "    fig = plt.figure(facecolor='white')\n",
    "    ax = fig.add_subplot(111)\n",
    "    ax.plot(true_data, label='True Data')\n",
    "    plt.plot(predicted_data, label='Prediction')\n",
    "    plt.legend()\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "c4b0840c",
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.read_csv('./data/sinewave.csv')  # 读取股票文件"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "588096bf",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sinewave</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.841471</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.873736</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.902554</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.927809</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.949402</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   sinewave\n",
       "0  0.841471\n",
       "1  0.873736\n",
       "2  0.902554\n",
       "3  0.927809\n",
       "4  0.949402"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "8e91a869",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[0.92074144]\n",
      " [0.93687433]\n",
      " [0.9512831 ]\n",
      " ...\n",
      " [0.88356435]\n",
      " [0.902948  ]\n",
      " [0.92074144]]\n"
     ]
    }
   ],
   "source": [
    "# 获取DataFrame中的数据，形式为数组array形式\n",
    "values = df.values\n",
    "# 确保所有数据为float类型\n",
    "values = values.astype('float32')\n",
    "\n",
    "# 特征的归一化处理\n",
    "scaler = MinMaxScaler(feature_range=(0, 1))\n",
    "scaled = scaler.fit_transform(values)\n",
    "\n",
    "print(scaled)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "fbdb18bb",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 定义series_to_supervised()函数\n",
    "# 将时间序列转换为监督学习问题\n",
    "def series_to_supervised(data, n_in=1, n_out=1, dropnan=True):\n",
    "    \"\"\"\n",
    "    将时间序列框定为有监督的学习数据集。\n",
    "        论据：\n",
    "        数据：作为列表或NumPy数组的观察序列。\n",
    "        n_in：作为输入的滞后观测数（X）。\n",
    "        n_out：作为输出的观察数（y）。\n",
    "        dropnan：布尔值，决定是否删除具有NaN值的行。\n",
    "    返回：\n",
    "    pd.DataFrame(用于监督学习)\n",
    "    \"\"\"\n",
    "    n_vars = 1 if type(data) is list else data.shape[1]\n",
    "    df = pd.DataFrame(data)\n",
    "    cols, names = list(), list()\n",
    "    # input sequence (t-n, ... t-1)\n",
    "    for i in range(n_in, 0, -1):\n",
    "        cols.append(df.shift(i))\n",
    "        names += [('var%d(t-%d)' % (j + 1, i)) for j in range(n_vars)]\n",
    "    # forecast sequence (t, t+1, ... t+n)\n",
    "    for i in range(0, n_out):\n",
    "        cols.append(df.shift(-i))\n",
    "        if i == 0:\n",
    "            names += [('var%d(t)' % (j + 1)) for j in range(n_vars)]\n",
    "        else:\n",
    "            names += [('var%d(t+%d)' % (j + 1, i)) for j in range(n_vars)]\n",
    "    # put it all together\n",
    "    agg = pd.concat(cols, axis=1)\n",
    "    agg.columns = names\n",
    "    # drop rows with NaN values\n",
    "    if dropnan:\n",
    "        agg.dropna(inplace=True)\n",
    "    return agg"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "b4599843",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 将时间序列转换为监督学习问题\n",
    "reframed = series_to_supervised(scaled, 1, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "885302e4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>var1(t-1)</th>\n",
       "      <th>var1(t)</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.920741</td>\n",
       "      <td>0.936874</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.936874</td>\n",
       "      <td>0.951283</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.951283</td>\n",
       "      <td>0.963911</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.963911</td>\n",
       "      <td>0.974708</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.974708</td>\n",
       "      <td>0.983631</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   var1(t-1)   var1(t)\n",
       "1   0.920741  0.936874\n",
       "2   0.936874  0.951283\n",
       "3   0.951283  0.963911\n",
       "4   0.963911  0.974708\n",
       "5   0.974708  0.983631"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reframed.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "91d4be5a",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 划分训练集和测试集\n",
    "train = reframed.iloc[:int(len(reframed) * 0.85), :].values\n",
    "test = reframed.iloc[int(len(reframed) * 0.85):, :].values\n",
    "# 划分训练集和测试集的输入和输出\n",
    "train_X, train_y = train[:, :-1], train[:, -1]\n",
    "test_X, test_y = test[:, :-1], test[:, -1]\n",
    "# 转化为三维数据\n",
    "# reshape input to be 3D [samples, timesteps, features]\n",
    "train_X = train_X.reshape((train_X.shape[0], 1, train_X.shape[1]))\n",
    "test_X = test_X.reshape((test_X.shape[0], 1, test_X.shape[1]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "474b0179",
   "metadata": {},
   "outputs": [],
   "source": [
    "configs = json.load(open('./test_2/config.json', 'r'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "baa20f5c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[Model] Model Compiled\n",
      "Time taken: 0:00:01.364231\n"
     ]
    }
   ],
   "source": [
    "model = Model()\n",
    "model.build_model(configs, train_X.shape[1], train_X.shape[2])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "8eaa9e30",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[Model] Training Started\n",
      "[Model] 50 epochs, 64 batch size\n",
      "Epoch 1/50\n",
      "67/67 [==============================] - 10s 39ms/step - loss: 0.1427 - val_loss: 0.0220\n",
      "Epoch 2/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0081 - val_loss: 0.0015\n",
      "Epoch 3/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0036 - val_loss: 0.0012\n",
      "Epoch 4/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0032 - val_loss: 0.0011\n",
      "Epoch 5/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0028 - val_loss: 7.6851e-04\n",
      "Epoch 6/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0026 - val_loss: 5.6910e-04\n",
      "Epoch 7/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0023 - val_loss: 6.6206e-04\n",
      "Epoch 8/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0022 - val_loss: 5.2819e-04\n",
      "Epoch 9/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0022 - val_loss: 5.0650e-04\n",
      "Epoch 10/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0020 - val_loss: 5.7302e-04\n",
      "Epoch 11/50\n",
      "67/67 [==============================] - 1s 15ms/step - loss: 0.0021 - val_loss: 4.9862e-04\n",
      "Epoch 12/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0020 - val_loss: 5.0923e-04\n",
      "Epoch 13/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0020 - val_loss: 5.4840e-04\n",
      "Epoch 14/50\n",
      "67/67 [==============================] - 1s 13ms/step - loss: 0.0020 - val_loss: 5.0769e-04\n",
      "Epoch 15/50\n",
      "67/67 [==============================] - ETA: 0s - loss: 0.001 - 1s 14ms/step - loss: 0.0019 - val_loss: 5.0801e-04\n",
      "Epoch 16/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0018 - val_loss: 5.5428e-04\n",
      "Epoch 17/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0018 - val_loss: 5.2832e-04\n",
      "Epoch 18/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0019 - val_loss: 7.8507e-04\n",
      "Epoch 19/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0019 - val_loss: 4.9759e-04\n",
      "Epoch 20/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0018 - val_loss: 7.6942e-04\n",
      "Epoch 21/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0018 - val_loss: 5.0979e-04\n",
      "Epoch 22/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0017 - val_loss: 4.9769e-04\n",
      "Epoch 23/50\n",
      "67/67 [==============================] - 1s 15ms/step - loss: 0.0018 - val_loss: 5.4066e-04\n",
      "Epoch 24/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0017 - val_loss: 5.1789e-04\n",
      "Epoch 25/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0017 - val_loss: 5.1316e-04\n",
      "Epoch 26/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0018 - val_loss: 4.9765e-04\n",
      "Epoch 27/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0018 - val_loss: 9.3961e-04\n",
      "Epoch 28/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0017 - val_loss: 6.6004e-04\n",
      "Epoch 29/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0017 - val_loss: 6.6909e-04\n",
      "Epoch 30/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0017 - val_loss: 5.4190e-04\n",
      "Epoch 31/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0016 - val_loss: 5.4228e-04\n",
      "Epoch 32/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0016 - val_loss: 5.7249e-04\n",
      "Epoch 33/50\n",
      "67/67 [==============================] - 1s 15ms/step - loss: 0.0016 - val_loss: 5.0279e-04\n",
      "Epoch 34/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0017 - val_loss: 5.2495e-04\n",
      "Epoch 35/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0016 - val_loss: 5.2953e-04\n",
      "Epoch 36/50\n",
      "67/67 [==============================] - 1s 15ms/step - loss: 0.0016 - val_loss: 4.9912e-04\n",
      "Epoch 37/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0016 - val_loss: 6.0653e-04\n",
      "Epoch 38/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0016 - val_loss: 4.9938e-04\n",
      "Epoch 39/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0016 - val_loss: 5.0840e-04\n",
      "Epoch 40/50\n",
      "67/67 [==============================] - 1s 15ms/step - loss: 0.0016 - val_loss: 4.9765e-04\n",
      "Epoch 41/50\n",
      "67/67 [==============================] - 1s 15ms/step - loss: 0.0015 - val_loss: 5.4644e-04\n",
      "Epoch 42/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0016 - val_loss: 5.3045e-04\n",
      "Epoch 43/50\n",
      "67/67 [==============================] - 1s 15ms/step - loss: 0.0016 - val_loss: 5.0831e-04\n",
      "Epoch 44/50\n",
      "67/67 [==============================] - 1s 15ms/step - loss: 0.0015 - val_loss: 4.9706e-04\n",
      "Epoch 45/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0015 - val_loss: 4.9611e-04\n",
      "Epoch 46/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0016 - val_loss: 5.5078e-04\n",
      "Epoch 47/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0016 - val_loss: 6.1329e-04\n",
      "Epoch 48/50\n",
      "67/67 [==============================] - 1s 14ms/step - loss: 0.0016 - val_loss: 7.5493e-04\n",
      "Epoch 49/50\n",
      "67/67 [==============================] - 1s 15ms/step - loss: 0.0015 - val_loss: 5.1960e-04\n",
      "Epoch 50/50\n",
      "67/67 [==============================] - 1s 15ms/step - loss: 0.0016 - val_loss: 5.7021e-04\n",
      "[Model] Training Completed. Model saved as save_models\n",
      "Time taken: 0:00:57.117713\n"
     ]
    }
   ],
   "source": [
    "# 内存中训练\n",
    "model.train(\n",
    "    train_X,\n",
    "    train_y,\n",
    "    epochs=configs['training']['epochs'],\n",
    "    batch_size=configs['training']['batch_size'],\n",
    "    validation_data=(test_X, test_y),\n",
    "    verbose=configs['training']['verbose'],\n",
    "    shuffle=configs['training']['shuffle'],\n",
    "    validation_freq=configs['training']['validation_freq'],\n",
    "    save_dir=configs['model']['save_dir']\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "cacd9cda",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[Model] Predicting Point-by-Point...\n"
     ]
    }
   ],
   "source": [
    "y_predict = model.predict_point_by_point(test_X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "03fbbff1",
   "metadata": {},
   "outputs": [],
   "source": [
    "test_X = test_X.reshape((test_X.shape[0], test_X.shape[2]))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e20a08c1",
   "metadata": {},
   "source": [
    "### 训练数据跟测试数据都相等的情况"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "bc49e110",
   "metadata": {},
   "outputs": [],
   "source": [
    "# invert scaling for forecast\n",
    "# 将预测结果按比例反归一化\n",
    "inv_y_predict = scaler.inverse_transform(y_predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "afb90a9a",
   "metadata": {},
   "outputs": [],
   "source": [
    "# invert scaling for actual\n",
    "# 将真实结果按比例反归一化\n",
    "test_y = test_y.reshape((len(test_y), 1))\n",
    "inv_y_train = scaler.inverse_transform(test_y)\n",
    "inv_y = inv_y_train[:, -1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "2987243d",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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x6NHj9Ld3c3HPvYxzj//fG688UbS6fSike9M7Nu3j2uvvRZYPPewUZw1RPDLAkmSkCTJbDEASKVSfOADH+ArX/kKgUBg2jGz5bRarRw6dIiRkREOHDjAyy+/bJoss+G//uu/6Onp4YILLjBblHnx3//93zz77LM88MADfP3rX+fxxx+fdtzMdS6VSjz77LP87u/+Ls899xxer3dGbM/s51BBoVDg/vvv54Mf/OCMY4tFxvlw1hBBf38/w8PDtZ9HRkbo7+83UaI6lixZwujoKACjo6P09PQA5spcLBb5wAc+wHXXXcf73//+RStnKBRi+/btPPnkk8RiMUql0gwZpspXKpWIx+N0dnbqKtcTTzzB/fffz8qVK7nmmmt47LHH+KM/+qNFJaPyewF6enp43/vex4EDBxbNOg8MDDAwMMBFF10EwFVXXcWzzz67aOSbigceeIC3vOUtLFmyBFic78p8OGuIYNu2bRw5coSjR49SKBTYt28fu3btMlssAHbt2sXevXsB2Lt3L1deeWXt829/+9sIIXjqqacIBoM1c1NPCCH4+Mc/zvr16/mTP/mTRSfn+Pg4sVgMgGw2y8MPP8z69evZvn07995776zyKXLfe++9XHbZZbrv0G6//XZGRkY4duwY+/bt47LLLuM73/nOopIxnU6TTCZr/37ooYfYtGnTolnn3t5eli1bxiuvvALAo48+yoYNGxaNfFNxzz331NxCiiyLTcZ5YWaAwmh873vfE2vWrBGrV68Wf/mXf2mKDNdcc43o7e0VNptN9Pf3i7vuuktMTEyIyy67TAwODorLL79cTE5OCiHk7Jjf+73fE6tXrxabNm0STz/9tCEy/uQnPxGA2Lx5szjvvPPEeeedJ773ve8tGjl//vOfi61bt4rNmzeLjRs3ittuu00IIcTrr78utm3bJs455xxx1VVXiVwuJ4QQIpvNiquuukqcc845Ytu2beL111/XVb4z8cMf/rCWNbSYZHz99dfFli1bxJYtW8SGDRtq78RiWWchhHjuuefEBRdcIDZv3iyuvPJKEYlEFpV8QgiRSqVER0eHiMVitc8Wm4wLod1ioo022mjjLMdZ4xpqo4022mhjdrSJoI022mjjLEebCNpoo402znK0iaCNNtpo4yxHmwjaaKONNs5ytImgjTbaaOMsR5sI2mijjTbOcvz/2+2RBYs3ZQ0AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_results(inv_y_predict, inv_y)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "deep",
   "language": "python",
   "name": "deep"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
